*Table A.29: Meal and Snack treatment effects on Body Size with an alternative inference procedure (Randomisation Inference)
cd ""

use "master_data_adults_child_s13456_shared.dta", clear 

drop meal_control snack_control
gen meal_control=1 if treatment==2
replace meal_control=0 if treatment==1

gen snack_control=1 if treatment==3
replace snack_control=0 if treatment==1

drop if type_id=="X" // **Dropping newborns born during the three years of study
drop if id=="3885553B" //**error in the id number and empty data
drop if id=="3885553G" //**error in the id number and empty data
replace treatment=2 if id=="38855553B" //**retrieving the correct treatment for this id
replace treatment=2 if id=="38855553G" //**retrieving the correct treatment for this id
drop if id=="101aa22c" //**this id does not exist
drop if id=="27655663" //**outlier on many measurements

gen obese_var=1 if bmi_cat==2
replace obese_var=0 if obese_var==. & bmi_cat!=.

gen overw_obese=1 if bmi_cat==2 | bmi_cat==1
replace overw_obese=0 if overw_obese==. & bmi_cat!=.

***percentile in children
gen pzheight=normal(zht)
gen pzweight=normal(zwt)

*BMI
*Calculate z-scores for BMI
egen gendermax=max(gender), by(id_nb)
ge sex=(gendermax==1) 
replace sex=. if gendermax==.

drop zbmi pzbmi
egen zbmi = zanthro(bmi,ba,UK), xvar(months) gender(sex) gencode(male=1, female=0) ageunit(month)
gen pzbmi=normal(zbmi)

ge uwgt_child=(pzbmi<=0.02)
replace uwgt_child=. if pzbmi==.

ge normalw_child=(pzbmi>0.02 & pzbmi<0.85)
replace normalw_child=. if pzbmi==.

ge overw_child=(pzbmi>=0.85 & pzbmi<0.91)
replace overw_child=. if pzbmi==.  

ge overw_obese_child=(pzbmi>=0.85)
replace overw_obese_child=. if pzbmi==.  

ge obesew_child=(pzbmi>=0.91)
replace obesew_child=. if pzbmi==.

drop bmi_cat_child
ge bmi_cat_child=.
replace bmi_cat_child=-1 if uwgt_child==1
replace bmi_cat_child=0 if normalw_child==1
replace bmi_cat_child=1 if overw_child==1
replace bmi_cat_child=2 if obesew_child==1
drop bmi_cat_child

********************************************************************************
ge meal=(treatment==2)
replace meal=. if treatment==.

ge snack=(treatment==3)
replace snack=. if treatment==.

ge session1=(session==1)
replace session1=. if session==.

ge session3=(session==3)
replace session3=. if session==.

ge session4=(session==4)
replace session4=. if session==.

ge session5=(session==5)
replace session5=. if session==.

ge session6=(session==6)
replace session6=. if session==.

ge meal_session1=meal*session1
ge meal_session3=meal*session3
ge meal_session4=meal*session4
ge meal_session5=meal*session5
ge meal_session6=meal*session6

ge snack_session1=snack*session1
ge snack_session3=snack*session3
ge snack_session4=snack*session4
ge snack_session5=snack*session5
ge snack_session6=snack*session6

********************************************************************************
**Randomisation inference: pvalue in (round brakets)
***PANEL A Children******************

set more off
preserve
*the smaller the dataset (i.e. fewer variables) the faster randcmd runs)
keep pzbmi zbmi overw_obese_child uwgt_child session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6 child hh_id id id_nb session

foreach x in pzbmi zbmi overw_obese_child uwgt_child {
xtreg `x' session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6 if child==1, cluster(hh_id) fe
*Randomisation Inference
randcmd ((meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6) ///
xtreg `x' session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6 if child==1, cluster(hh_id) fe),  ///
treatvars(meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6) seed(123) reps(5000)
matrix b=e(RCoef)
local randt_m3=b[1,5]
local randt_m4=b[2,5]
local randt_m5=b[3,5]
local randt_m6=b[4,5]

local randt_s3=b[5,5]
local randt_s4=b[6,5]
local randt_s5=b[7,5]
local randt_s6=b[8,5]

xtreg `x' session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6 if child==1, cluster(hh_id) fe

*Joint tests
*meal all
test meal_session3 meal_session4 meal_session5 meal_session6
local meal=r(p)

*snack all
test snack_session3 snack_session4 snack_session5 snack_session6
local snack=r(p)


*meal medium/long
test meal_session4 meal_session5 meal_session6 
local mlr=r(p)

*snack medium/long
test snack_session4 snack_session5 snack_session6 
local slr=r(p)

outreg2 using BMI_RI_v7.xls, label dec(3) append excel ///
addstat(Meal joint, `meal', Snack joint, `snack', Meal long, `mlr', Snack long, `slr', ///
RI p-val MS3, `randt_m3', RI p-val MS4, `randt_m4', RI p-val MS5, `randt_m5', RI p-val MS6, `randt_m6', ///
RI p-val SS3, `randt_s3', RI p-val SS4, `randt_s4', RI p-val SS5, `randt_s5', RI p-val SS6, `randt_s6') ///
keep(session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6) 

}



***PANEL B Adults******************
use "master_data_adults_child_s13456_shared.dta", clear 

drop meal_control snack_control
gen meal_control=1 if treatment==2
replace meal_control=0 if treatment==1
tab meal_control

gen snack_control=1 if treatment==3
replace snack_control=0 if treatment==1
tab snack_control

drop if type_id=="X"
drop if id=="3885553B"
drop if id=="3885553G"
replace treatment=2 if id=="38855553B"
replace treatment=2 if id=="38855553G"
drop if id=="101aa22c"
  
tab child if session==1 //289 children at session 1 who attended 
**outlier on many measurements
drop if id=="27655663"

gen obese_var=1 if bmi_cat==2
replace obese_var=0 if obese_var==. & bmi_cat!=.

gen overw_obese=1 if bmi_cat==2 | bmi_cat==1
replace overw_obese=0 if overw_obese==. & bmi_cat!=.

***percentile in children
gen pzheight=normal(zht)
gen pzweight=normal(zwt)

*BMI
*Calculate z-scores for BMI
egen gendermax=max(gender), by(id_nb)
ge sex=(gendermax==1) 
replace sex=. if gendermax==.

drop zbmi pzbmi
egen zbmi = zanthro(bmi,ba,UK), xvar(months) gender(sex) gencode(male=1, female=0) ageunit(month)
gen pzbmi=normal(zbmi)

ge uwgt_child=(pzbmi<=0.02)
replace uwgt_child=. if pzbmi==.

ge normalw_child=(pzbmi>0.02 & pzbmi<0.85)
replace normalw_child=. if pzbmi==.

ge overw_child=(pzbmi>=0.85 & pzbmi<0.91)
replace overw_child=. if pzbmi==.  

ge overw_obese_child=(pzbmi>=0.85)
replace overw_obese_child=. if pzbmi==.  

ge obesew_child=(pzbmi>=0.91)
replace obesew_child=. if pzbmi==.

drop bmi_cat_child
ge bmi_cat_child=.
replace bmi_cat_child=-1 if uwgt_child==1
replace bmi_cat_child=0 if normalw_child==1
replace bmi_cat_child=1 if overw_child==1
replace bmi_cat_child=2 if obesew_child==1
drop bmi_cat_child

********************************************************************************
ge meal=(treatment==2)
replace meal=. if treatment==.

ge snack=(treatment==3)
replace snack=. if treatment==.

ge session1=(session==1)
replace session1=. if session==.

ge session3=(session==3)
replace session3=. if session==.

ge session4=(session==4)
replace session4=. if session==.

ge session5=(session==5)
replace session5=. if session==.

ge session6=(session==6)
replace session6=. if session==.

ge meal_session1=meal*session1
ge meal_session3=meal*session3
ge meal_session4=meal*session4
ge meal_session5=meal*session5
ge meal_session6=meal*session6

ge snack_session1=snack*session1
ge snack_session3=snack*session3
ge snack_session4=snack*session4
ge snack_session5=snack*session5
ge snack_session6=snack*session6


**columns 4 to 8
set more off
preserve
*the smaller the dataset (i.e. fewer variables) the faster randcmd runs)
keep  mean_weight bmi overw_obese obese_var session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6 child hh_id id id_nb session

foreach x in mean_weight bmi overw_obese obese_var {
xtreg `x' session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6 if child==0, cluster(hh_id) fe
*Randomisation Inference
randcmd ((meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6) ///
xtreg `x' session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6 if child==0, cluster(hh_id) fe),  ///
treatvars(meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6) seed(123) reps(5000)
matrix b=e(RCoef)
local randt_m3=b[1,5]
local randt_m4=b[2,5]
local randt_m5=b[3,5]
local randt_m6=b[4,5]

local randt_s3=b[5,5]
local randt_s4=b[6,5]
local randt_s5=b[7,5]
local randt_s6=b[8,5]

xtreg `x' session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6 if child==0, cluster(hh_id) fe

*Joint tests
*meal all
test meal_session3 meal_session4 meal_session5 meal_session6
local meal=r(p)

*snack all
test snack_session3 snack_session4 snack_session5 snack_session6
local snack=r(p)


*meal medium/long
test meal_session4 meal_session5 meal_session6 
local mlr=r(p)

*snack medium/long
test snack_session4 snack_session5 snack_session6 
local slr=r(p)

outreg2 using BMI_RI_v8.xls, label dec(3) append excel ///
addstat(Meal joint, `meal', Snack joint, `snack', Meal long, `mlr', Snack long, `slr', ///
RI p-val MS3, `randt_m3', RI p-val MS4, `randt_m4', RI p-val MS5, `randt_m5', RI p-val MS6, `randt_m6', ///
RI p-val SS3, `randt_s3', RI p-val SS4, `randt_s4', RI p-val SS5, `randt_s5', RI p-val SS6, `randt_s6') ///
keep(session3 session4 session5 session6 meal_session3 meal_session4 meal_session5 meal_session6 snack_session3 snack_session4 snack_session5 snack_session6) 

}


